JavaScriptã®'using'ã¹ããŒãã¡ã³ããæ·±ãæãäžãããã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ããªãœãŒã¹ç®¡çã®å©ç¹ãããã³æœåšçãªãªãŒããŒããããæ€èšŒããŸãã
JavaScript 'using' ã¹ããŒãã¡ã³ãã®ããã©ãŒãã³ã¹ïŒãªãœãŒã¹ç®¡çãªãŒããŒãããã®çè§£
JavaScriptã®'using'ã¹ããŒãã¡ã³ãã¯ããªãœãŒã¹ç®¡çãç°¡çŽ åãã確å®çãªè§£æŸãä¿èšŒããããã«èšèšãããŠãããå€éšãªãœãŒã¹ãä¿æãããªããžã§ã¯ãã管çããããã®åŒ·åãªããŒã«ãæäŸããŸããããããä»ã®èšèªæ©èœãšåæ§ã«ããã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãšæœåšçãªãªãŒããŒããããçè§£ããŠå¹æçã«äœ¿çšããããšãéèŠã§ãã
'using' ã¹ããŒãã¡ã³ããšã¯äœãïŒ
'using'ã¹ããŒãã¡ã³ãïŒæç€ºçãªãªãœãŒã¹ç®¡çææ¡ã®äžéšãšããŠå°å ¥ïŒã¯ããªããžã§ã¯ãã® `Symbol.dispose` ãŸã㯠`Symbol.asyncDispose` ã¡ãœããããããã䜿çšãããŠããã³ãŒããããã¯ãæããéã«ãæ£åžžçµäºãäŸå€ããã®ä»ã®çç±ã«é¢ãããåŒã³åºãããããšãä¿èšŒãããç°¡æœã§ä¿¡é Œæ§ã®é«ãæ¹æ³ãæäŸããŸããããã«ããããªããžã§ã¯ããä¿æãããªãœãŒã¹ãè¿ éã«è§£æŸããããªãŒã¯ãé²ããã¢ããªã±ãŒã·ã§ã³å šäœã®å®å®æ§ãåäžãããŸãã
ããã¯ããã¡ã€ã«ãã³ãã«ãããŒã¿ããŒã¹æ¥ç¶ããããã¯ãŒã¯ãœã±ãããªã©ãæ¯æžãé¿ããããã«æç€ºçã«è§£æŸããå¿ èŠãããå€éšãªãœãŒã¹ãæ±ãå Žåã«ç¹ã«æçã§ãã
'using' ã¹ããŒãã¡ã³ãã®å©ç¹
- 確å®çè§£æŸ: é確å®çã§ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãšã¯ç°ãªãããªãœãŒã¹ã®è§£æŸãä¿èšŒããŸãã
- ç°¡çŽ åããããªãœãŒã¹ç®¡ç: åŸæ¥ã® `try...finally` ãããã¯ãšæ¯èŒããŠãå®åçãªã³ãŒããåæžããŸãã
- ã³ãŒãã®å¯èªæ§åäž: ãªãœãŒã¹ç®¡çããžãã¯ãããæç¢ºã§çè§£ãããããªããŸãã
- ãªãœãŒã¹ãªãŒã¯ã®é²æ¢: å¿ èŠä»¥äžã«é·ããªãœãŒã¹ãä¿æãããªã¹ã¯ãæå°éã«æããŸãã
åºæ¬çãªã¡ã«ããºã : `Symbol.dispose` ãš `Symbol.asyncDispose`
`using` ã¹ããŒãã¡ã³ãã¯ã`Symbol.dispose` ãŸã㯠`Symbol.asyncDispose` ã¡ãœãããå®è£ ãããªããžã§ã¯ãã«äŸåããŸãããããã®ã¡ãœããã¯ããªããžã§ã¯ããä¿æãããªãœãŒã¹ãè§£æŸãã責任ããããŸãã`using` ã¹ããŒãã¡ã³ãã¯ããããã®ã¡ãœãããé©åã«åŒã³åºãããããšãä¿èšŒããŸãã
`Symbol.dispose` ã¡ãœããã¯åæçãªè§£æŸã«äœ¿çšããã`Symbol.asyncDispose` ã¯éåæçãªè§£æŸã«äœ¿çšãããŸãã`using` ã¹ããŒãã¡ã³ãã®èšè¿°æ¹æ³ïŒ`using` vs `await using`ïŒã«å¿ããŠãé©åãªã¡ãœãããåŒã³åºãããŸãã
åæçãªè§£æŸã®äŸ
ãã¡ã€ã«ãã³ãã«ã管çããåçŽãªã¯ã©ã¹ãèããŠã¿ãŸãããïŒãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ããã«ç°¡ç¥åããŠããŸãïŒïŒ
class FileResource {
constructor(filename) {
this.filename = filename;
this.fileHandle = this.openFile(filename); // ãã¡ã€ã«ãéãã·ãã¥ã¬ãŒã·ã§ã³
console.log(`FileResource created for ${filename}`);
}
openFile(filename) {
// ãã¡ã€ã«ãéãã·ãã¥ã¬ãŒã·ã§ã³ïŒå®éã®ãã¡ã€ã«ã·ã¹ãã æäœã«çœ®ãæããŠãã ããïŒ
console.log(`Opening file: ${filename}`);
return `File Handle for ${filename}`;
}
[Symbol.dispose]() {
this.closeFile();
}
closeFile() {
// ãã¡ã€ã«ãéããã·ãã¥ã¬ãŒã·ã§ã³ïŒå®éã®ãã¡ã€ã«ã·ã¹ãã æäœã«çœ®ãæããŠãã ããïŒ
console.log(`Closing file: ${this.filename}`);
}
}
// usingã¹ããŒãã¡ã³ãã®äœ¿çš
{
using file = new FileResource("example.txt");
// ãã¡ã€ã«ã䜿ã£ãæäœãå®è¡
console.log("Performing operations with the file");
}
// ãããã¯ãæãããšãã«ãã¡ã€ã«ã¯èªåçã«éããããŸã
éåæçãªè§£æŸã®äŸ
ããŒã¿ããŒã¹æ¥ç¶ã管çããã¯ã©ã¹ãèããŠã¿ãŸãããïŒãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ããã«ç°¡ç¥åããŠããŸãïŒïŒ
class DatabaseConnection {
constructor(connectionString) {
this.connectionString = connectionString;
this.connection = this.connect(connectionString); // ããŒã¿ããŒã¹ãžã®æ¥ç¶ãã·ãã¥ã¬ãŒã·ã§ã³
console.log(`DatabaseConnection created for ${connectionString}`);
}
async connect(connectionString) {
// ããŒã¿ããŒã¹ãžã®æ¥ç¶ãã·ãã¥ã¬ãŒã·ã§ã³ïŒå®éã®ããŒã¿ããŒã¹æäœã«çœ®ãæããŠãã ããïŒ
await new Promise(resolve => setTimeout(resolve, 50)); // éåææäœãã·ãã¥ã¬ãŒã·ã§ã³
console.log(`Connecting to: ${connectionString}`);
return `Database Connection for ${connectionString}`;
}
async [Symbol.asyncDispose]() {
await this.disconnect();
}
async disconnect() {
// ããŒã¿ããŒã¹ããã®åæãã·ãã¥ã¬ãŒã·ã§ã³ïŒå®éã®ããŒã¿ããŒã¹æäœã«çœ®ãæããŠãã ããïŒ
await new Promise(resolve => setTimeout(resolve, 50)); // éåææäœãã·ãã¥ã¬ãŒã·ã§ã³
console.log(`Disconnecting from database`);
}
}
// await usingã¹ããŒãã¡ã³ãã®äœ¿çš
async function main() {
{
await using db = new DatabaseConnection("mydb://localhost:5432");
// ããŒã¿ããŒã¹ã䜿ã£ãæäœãå®è¡
console.log("Performing operations with the database");
}
// ãããã¯ãæãããšãã«ããŒã¿ããŒã¹æ¥ç¶ã¯èªåçã«åæãããŸã
}
main();
ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
`using` ã¹ããŒãã¡ã³ãã¯ãªãœãŒã¹ç®¡çã«å€§ããªå©ç¹ããããããŸããããã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãèæ ®ããããšãäžå¯æ¬ ã§ãã
`Symbol.dispose` ãŸã㯠`Symbol.asyncDispose` åŒã³åºãã®ãªãŒããŒããã
äž»ãªããã©ãŒãã³ã¹ãªãŒããŒãããã¯ã`Symbol.dispose` ãŸã㯠`Symbol.asyncDispose` ã¡ãœããèªäœã®å®è¡ããçããŸãããã®ã¡ãœããã®è€éããšå®è¡æéã¯ãå šäœã®ããã©ãŒãã³ã¹ã«çŽæ¥åœ±é¿ããŸããè§£æŸããã»ã¹ã«è€éãªæäœïŒäŸïŒãããã¡ã®ãã©ãã·ã¥ãè€æ°ã®æ¥ç¶ã®ã¯ããŒãºãé«ã³ã¹ããªèšç®ã®å®è¡ïŒãå«ãŸããå Žåãé¡èãªé å»¶ãåŒãèµ·ããå¯èœæ§ããããŸãããããã£ãŠããããã®ã¡ãœããå ã®è§£æŸããžãã¯ã¯ããã©ãŒãã³ã¹ã®ããã«æé©åãããã¹ãã§ãã
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãžã®åœ±é¿
`using` ã¹ããŒãã¡ã³ãã¯ç¢ºå®çãªè§£æŸãæäŸããŸãããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®å¿ èŠæ§ããªããããã§ã¯ãããŸããããªããžã§ã¯ãã¯å°éäžå¯èœã«ãªã£ããšãã«ãäŸç¶ãšããŠã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããå¿ èŠããããŸãããããã`using` ã䜿çšããŠãªãœãŒã¹ãæç€ºçã«è§£æŸããããšã§ãç¹ã«ãªããžã§ã¯ãã倧éã®ã¡ã¢ãªãå€éšãªãœãŒã¹ãä¿æããŠããã·ããªãªã§ã¯ãã¡ã¢ãªãããããªã³ããšã¬ããŒãžã³ã¬ã¯ã¿ã®è² è·ãåæžã§ããŸãããªãœãŒã¹ãè¿ éã«è§£æŸããããšã§ãããããããæ©ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®å¯Ÿè±¡ãšãªããããå¹ççãªã¡ã¢ãªç®¡çã«ã€ãªãããŸãã
`try...finally` ãšã®æ¯èŒ
åŸæ¥ãJavaScriptã§ã®ãªãœãŒã¹ç®¡ç㯠`try...finally` ãããã¯ã䜿çšããŠè¡ãããŠããŸããã`using` ã¹ããŒãã¡ã³ãã¯ããã®ãã¿ãŒã³ãç°¡çŽ åããç³è¡£æ§æãšèŠãªãããšãã§ããŸãã`using` ã¹ããŒãã¡ã³ãã®åºæ¬çãªã¡ã«ããºã ã¯ãJavaScriptãšã³ãžã³ã«ãã£ãŠçæããã `try...finally` æ§é ãå«ãã§ããå¯èœæ§ãé«ãã§ãããããã£ãŠã`using` ã¹ããŒãã¡ã³ããšé©åã«èšè¿°ããã `try...finally` ãããã¯ãšã®éã®ããã©ãŒãã³ã¹ã®å·®ã¯ãå€ãã®å Žåããããããã§ãã
ãããã`using` ã¹ããŒãã¡ã³ãã¯ãã³ãŒãã®å¯èªæ§ãšå®åçãªã³ãŒãã®åæžãšããç¹ã§å€§ããªå©ç¹ãæäŸããŸãããªãœãŒã¹ç®¡çã®æå³ãæç¢ºã«ããããšã§ãä¿å®æ§ãåäžãããšã©ãŒã®ãªã¹ã¯ãæžå°ããŸãã
éåæè§£æŸã®ãªãŒããŒããã
`await using` ã¹ããŒãã¡ã³ãã¯ãéåææäœã®ãªãŒããŒãããã䌎ããŸãã`Symbol.asyncDispose` ã¡ãœããã¯éåæã«å®è¡ããããããæ éã«æ±ããªããšã€ãã³ãã«ãŒãããããã¯ããå¯èœæ§ããããŸããéåæã®è§£æŸæäœããã³ããããã³ã°ã§ãããå¹ççã§ããããšãä¿èšŒããŠãã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ã«åœ±é¿ãäžããªãããã«ããããšãéèŠã§ããè§£æŸã¿ã¹ã¯ãã¯ãŒã«ãŒã¹ã¬ããã«ãªãããŒããããããã³ããããã³ã°I/Oæäœã䜿çšããããããªã©ã®æè¡ãããã®ãªãŒããŒãããã軜æžããã®ã«åœ¹ç«ã¡ãŸãã
'using' ã¹ããŒãã¡ã³ãã®ããã©ãŒãã³ã¹ãæé©åããããã®ãã¹ããã©ã¯ãã£ã¹
- è§£æŸããžãã¯ã®æé©å: `Symbol.dispose` ãš `Symbol.asyncDispose` ã¡ãœãããã§ããã ãå¹ççã§ããããšã確èªããŸããè§£æŸäžã«äžèŠãªæäœãå®è¡ããªãããã«ããŸãã
- ãªãœãŒã¹å²ãåœãŠã®æå°å: `using` ã¹ããŒãã¡ã³ãã§ç®¡çããå¿ èŠããããªãœãŒã¹ã®æ°ãæžãããŸããããšãã°ãæ°ããæ¥ç¶ããªããžã§ã¯ããäœæãã代ããã«ãæ¢åã®ãã®ãåå©çšããŸãã
- ã³ãã¯ã·ã§ã³ããŒãªã³ã°ã®äœ¿çš: ããŒã¿ããŒã¹æ¥ç¶ãªã©ã®ãªãœãŒã¹ã«ã¯ãã³ãã¯ã·ã§ã³ããŒãªã³ã°ã䜿çšããŠãæ¥ç¶ã®ç¢ºç«ãšã¯ããŒãºã®ãªãŒããŒããããæå°éã«æããŸãã
- ãªããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«ã®æ€èš: ãªããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«ãæ éã«æ€èšãããªãœãŒã¹ãäžèŠã«ãªã£ããããã«è§£æŸãããããã«ããŸãã
- ãããã¡ã€ãªã³ã°ãšæž¬å®: ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«ããã `using` ã¹ããŒãã¡ã³ãã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã枬å®ããŸããããã«ããã¯ãç¹å®ããããã«å¿ããŠæé©åããŸãã
- é©åãªãšã©ãŒãã³ããªã³ã°: `Symbol.dispose` ãš `Symbol.asyncDispose` ã¡ãœããå ã«å ç¢ãªãšã©ãŒãã³ããªã³ã°ãå®è£ ããäŸå€ãè§£æŸããã»ã¹ãäžæããã®ãé²ããŸãã
- ãã³ããããã³ã°ãªéåæè§£æŸ: `await using` ã䜿çšããå Žåãéåæã®è§£æŸæäœããã³ããããã³ã°ã§ããããšã確èªããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ã«åœ±é¿ãäžããªãããã«ããŸãã
æœåšçãªãªãŒããŒãããã®ã·ããªãª
ç¹å®ã®ã·ããªãªã§ã¯ã`using` ã¹ããŒãã¡ã³ãã«é¢é£ããããã©ãŒãã³ã¹ãªãŒããŒããããå¢å¹ ãããå¯èœæ§ããããŸãã
- é »ç¹ãªãªãœãŒã¹ã®ååŸãšè§£æŸ: ãªãœãŒã¹ãé »ç¹ã«ååŸããã³è§£æŸãããšãç¹ã«è§£æŸããã»ã¹ãè€éãªå Žåã«ã倧ããªãªãŒããŒããããçºçããå¯èœæ§ããããŸãããã®ãããªå Žåã¯ããªãœãŒã¹ããã£ãã·ã¥ãŸãã¯ããŒãªã³ã°ããŠãè§£æŸã®é »åºŠãæžããããšãæ€èšããŠãã ããã
- é·å¯¿åœã®ãªãœãŒã¹: ãªãœãŒã¹ãé·æéä¿æãããšãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãé å»¶ããã¡ã¢ãªã®æçåã«ã€ãªããå¯èœæ§ããããŸããã¡ã¢ãªç®¡çãæ¹åããããã«ããªãœãŒã¹ãäžèŠã«ãªã£ããããã«è§£æŸããŠãã ããã
- ãã¹ãããã 'using' ã¹ããŒãã¡ã³ã: è€æ°ã®ãã¹ãããã `using` ã¹ããŒãã¡ã³ãã䜿çšãããšããªãœãŒã¹ç®¡çã®è€éããå¢ããè§£æŸããã»ã¹ãçžäºã«äŸåããŠããå Žåã«ããã©ãŒãã³ã¹ãªãŒããŒããããçºçããå¯èœæ§ããããŸãããã¹ããæå°éã«æããè§£æŸã®é åºãæé©åããããã«ã³ãŒããæ éã«æ§æããŠãã ããã
- äŸå€åŠç: `using` ã¹ããŒãã¡ã³ãã¯äŸå€ãååšããå Žåã§ãè§£æŸãä¿èšŒããŸãããäŸå€åŠçããžãã¯èªäœããªãŒããŒããããåŒãèµ·ããå¯èœæ§ããããŸããããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããããã«ãäŸå€åŠçã³ãŒããæé©åããŠãã ããã
äŸïŒåœéçãªã³ã³ããã¹ããšããŒã¿ããŒã¹æ¥ç¶
ãŠãŒã¶ãŒã®æåšå°ã«åºã¥ããŠç°ãªãå°åã®ããŒã¿ããŒã¹ã«æ¥ç¶ããå¿ èŠããããã°ããŒãã«ãªeã³ããŒã¹ã¢ããªã±ãŒã·ã§ã³ãæ³åããŠã¿ãŠãã ãããåããŒã¿ããŒã¹æ¥ç¶ã¯ãæ éã«ç®¡çããå¿ èŠããããªãœãŒã¹ã§ãã`await using` ã¹ããŒãã¡ã³ãã䜿çšãããšããããã¯ãŒã¯ã®åé¡ãããŒã¿ããŒã¹ã®ãšã©ãŒãçºçããå Žåã§ãããããã®æ¥ç¶ã確å®ã«ã¯ããŒãºãããŸããè§£æŸããã»ã¹ã«ãã©ã³ã¶ã¯ã·ã§ã³ã®ããŒã«ããã¯ãäžæããŒã¿ã®ã¯ãªãŒã³ã¢ãããå«ãŸããå Žåã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ãæå°éã«æããããã«ãããã®æäœãæé©åããããšãéèŠã§ããããã«ãåå°åã§ã³ãã¯ã·ã§ã³ããŒãªã³ã°ã䜿çšããŠæ¥ç¶ãåå©çšããåãŠãŒã¶ãŒãªã¯ãšã¹ãããšã«æ°ããæ¥ç¶ã確ç«ãããªãŒããŒããããåæžããããšãæ€èšããŠãã ããã
async function handleUserRequest(userLocation) {
let connectionString;
switch (userLocation) {
case "US":
connectionString = "us-db://localhost:5432";
break;
case "EU":
connectionString = "eu-db://localhost:5432";
break;
case "Asia":
connectionString = "asia-db://localhost:5432";
break;
default:
throw new Error("Unsupported location");
}
try {
await using db = new DatabaseConnection(connectionString);
// ããŒã¿ããŒã¹æ¥ç¶ã䜿çšããŠãŠãŒã¶ãŒãªã¯ãšã¹ããåŠç
console.log(`Processing request for user in ${userLocation}`);
} catch (error) {
console.error("Error processing request:", error);
// ãšã©ãŒãé©åã«åŠç
}
// ãããã¯ãæãããšãã«ããŒã¿ããŒã¹æ¥ç¶ã¯èªåçã«éããããŸã
}
// 䜿çšäŸ
handleUserRequest("US");
handleUserRequest("EU");
代æ¿ã®ãªãœãŒã¹ç®¡çææ³
`using` ã¹ããŒãã¡ã³ãã¯åŒ·åãªããŒã«ã§ããããã¹ãŠã®ãªãœãŒã¹ç®¡çã·ããªãªã§æåã®è§£æ±ºçã§ãããšã¯éããŸããã以äžã®ä»£æ¿ææ³ãæ€èšããŠãã ããïŒ
- 匱ãåç § (Weak References): ã¢ããªã±ãŒã·ã§ã³ã®æ£åœæ§ã«ãšã£ãŠéèŠã§ãªããªãœãŒã¹ã管çããããã«ãWeakRefãšFinalizationRegistryã䜿çšããŸãããããã®ã¡ã«ããºã ã«ãããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã劚ããããšãªããªããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«ã远跡ã§ããŸãã
- ãªãœãŒã¹ããŒã«: ããŒã¿ããŒã¹æ¥ç¶ããããã¯ãŒã¯ãœã±ãããªã©ãé »ç¹ã«äœ¿çšããããªãœãŒã¹ã管çããããã«ãªãœãŒã¹ããŒã«ãå®è£ ããŸãããªãœãŒã¹ããŒã«ã¯ããªãœãŒã¹ã®ååŸãšè§£æŸã®ãªãŒããŒããããåæžã§ããŸãã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããã¯: ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããã»ã¹ãžã®ããã¯ãæäŸããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãå©çšããŸãããããã®ããã¯ã«ããããªããžã§ã¯ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããçŽåã«ã¯ãªãŒã³ã¢ããæäœãå®è¡ã§ããŸãã
- æåã§ã®ãªãœãŒã¹ç®¡ç: å Žåã«ãã£ãŠã¯ãç¹ã«è§£æŸããã»ã¹ããã现ããå¶åŸ¡ããå¿ èŠãããå Žåã`try...finally` ãããã¯ã䜿çšããæåã§ã®ãªãœãŒã¹ç®¡çãããé©åãªå ŽåããããŸãã
çµè«
JavaScriptã®'using'ã¹ããŒãã¡ã³ãã¯ããªãœãŒã¹ç®¡çã«ãããŠå€§ããªæ¹åãããããã確å®çãªè§£æŸãšã³ãŒãã®ç°¡çŽ åãæäŸããŸããããããç¹ã«è€éãªè§£æŸããžãã¯ãé »ç¹ãªãªãœãŒã¹ã®ååŸã»è§£æŸã䌎ãã·ããªãªã§ã¯ã`Symbol.dispose` ããã³ `Symbol.asyncDispose` ã¡ãœããã«é¢é£ããæœåšçãªããã©ãŒãã³ã¹ãªãŒããŒããããçè§£ããããšãéèŠã§ãããã¹ããã©ã¯ãã£ã¹ã«åŸããè§£æŸããžãã¯ãæé©åãããªããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«ãæ éã«æ€èšããããšã§ãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªãã`using` ã¹ããŒãã¡ã³ãã广çã«æŽ»çšããŠã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ãåäžããããªãœãŒã¹ãªãŒã¯ãé²ãããšãã§ããŸããæé©ãªãªãœãŒã¹ç®¡çãä¿èšŒããããã«ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã§ããã©ãŒãã³ã¹ãžã®åœ±é¿ããããã¡ã€ãªã³ã°ããæž¬å®ããããšãå¿ããªãã§ãã ããã